// 存储爬取的结果
let scrapedData = null;

// 获取DOM元素
const fullPageBtn = document.getElementById('fullPage');
const selectionBtn = document.getElementById('selection');
const resultDiv = document.getElementById('result');
const statusDiv = document.getElementById('status');
const exportTextBtn = document.getElementById('exportText');
const exportJsonBtn = document.getElementById('exportJson');

// 爬取整个页面
fullPageBtn.addEventListener('click', async () => {
  try {
    setStatus('正在爬取整个页面...');
    const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
    
    // 注入内容脚本并执行爬取
    const result = await chrome.scripting.executeScript({
      target: { tabId: tab.id },
      func: scrapeFullPage
    });
    
    if (result && result[0] && result[0].result) {
      scrapedData = result[0].result;
      displayResult(scrapedData);
      setStatus(`爬取完成，共${scrapedData.content.length > 500 ? '500+' : scrapedData.content.length}个字符`);
      enableExportButtons();
    } else {
      setStatus('爬取失败');
    }
  } catch (error) {
    console.error('爬取错误:', error);
    setStatus('爬取过程中发生错误');
  }
});

// 爬取选中内容
selectionBtn.addEventListener('click', async () => {
  try {
    setStatus('正在爬取选中内容...');
    const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
    
    // 注入内容脚本并执行爬取
    const result = await chrome.scripting.executeScript({
      target: { tabId: tab.id },
      func: scrapeSelection
    });
    
    if (result && result[0] && result[0].result) {
      scrapedData = result[0].result;
      displayResult(scrapedData);
      setStatus(`爬取完成，共${scrapedData.content.length}个字符`);
      enableExportButtons();
    } else {
      setStatus('未选中任何内容或爬取失败');
    }
  } catch (error) {
    console.error('爬取错误:', error);
    setStatus('爬取过程中发生错误');
  }
});

// 导出为文本
exportTextBtn.addEventListener('click', () => {
  if (scrapedData) {
    chrome.runtime.sendMessage({
      action: 'exportText',
      data: scrapedData
    });
  }
});

// 导出为JSON
exportJsonBtn.addEventListener('click', () => {
  if (scrapedData) {
    chrome.runtime.sendMessage({
      action: 'exportJson',
      data: scrapedData
    });
  }
});

// 显示爬取结果
function displayResult(data) {
  resultDiv.innerHTML = `
    <strong>标题:</strong> ${data.title}<br>
    <strong>URL:</strong> ${data.url}<br>
    <strong>内容:</strong> ${data.content.length > 500 ? data.content.substring(0, 500) + '...' : data.content}
  `;
}

// 设置状态信息
function setStatus(text) {
  statusDiv.textContent = text;
}

// 启用导出按钮
function enableExportButtons() {
  exportTextBtn.disabled = false;
  exportJsonBtn.disabled = false;
}

// 在页面中执行的爬取整个页面的函数
function scrapeFullPage() {
  // 提取页面标题
  const title = document.title || '无标题';
  
  // 提取页面URL
  const url = window.location.href;
  
  // 提取页面正文内容（尝试排除导航、广告等非正文元素）
  let content = '';
  
  // 优先尝试提取主要内容
  const mainContent = document.querySelector('main') || 
                     document.querySelector('article') ||
                     document.querySelector('.content') ||
                     document.body;
                     
  if (mainContent) {
    // 获取所有文本节点
    const textNodes = mainContent.querySelectorAll('p, h1, h2, h3, h4, h5, h6');
    textNodes.forEach(node => {
      if (node.textContent.trim()) {
        content += node.textContent.trim() + '\n\n';
      }
    });
    
    // 如果没有找到足够的内容，使用body的文本
    if (content.length < 100) {
      content = mainContent.textContent.trim();
    }
  } else {
    content = document.body.textContent.trim();
  }
  
  return { title, url, content };
}

// 在页面中执行的爬取选中内容的函数
function scrapeSelection() {
  // 获取用户选中的内容
  const selection = window.getSelection();
  const content = selection.toString().trim();
  
  if (!content) {
    return null;
  }
  
  return {
    title: document.title || '无标题',
    url: window.location.href,
    content: content
  };
}
